Performance
-------------------

cm-ht-traffic-throttling
^^^^^^^^^^^^^^^^^^^^^^^^^^^

**Default value:** ``xmpp:25k:0:disc,bin:200m:0:disc``

**Example:** ``'cm-ht-traffic-throttling' = 'xmpp:25k:0:disc,bin:200m:0:disc'``

**Possible values:** comma separated list of traffic limits settings.

**Description:** This property is used to specify traffic limit of non-user connections, that is s2s, external components and other high traffic server connections. The meaning of the property and values encoded are in the same way as for the :ref:`cm-traffic-throttling property<cmTrafficThrottling>`.

**Available since:** 8.0.0

.. _cmTrafficThrottling:

cm-traffic-throttling
^^^^^^^^^^^^^^^^^^^^^^^^^^^

**Default value:** ``xmpp:2500:0:disc,bin:20m:0:disc``

**Example:** ``'cm-traffic-throttling' = 'xmpp:2500:0:disc,bin:20m:0:disc'``

**Possible values:** comma separated list of traffic limits settings.

**Description:** The ``cm-traffic-throttling`` property allows you to limit traffic on user connections. These limits are applied to each user connection and if a limit is exceeded then a specified action is applied.

The property value is a comma separated list of traffic limits settings. For example the first part: ``xmpp:2500:0:disc`` specifies traffic limits for XMPP data to 2,500 packets allowed within last minute either sent to or received from a user and unlimited (0) total traffic on the user connection, in case any limit is exceeded the action is to **disconnect** the user.

-  **[xmpp|bin]** traffic type, xmpp - XMPP traffic, that is limits refer to a number of XMPP packets transmitted, bin - binary traffic, that is limits refer to a number of bytes transmitted.

-  **2500** maximum traffic allowed within 1 minute. 0 means unlimited, or no limits.

-  **0** maximum traffic allowed for the life span of the connection. 0 means unlimited or no limits.

-  **[disc|drop]** action performed on the connection if limits are exceeded. disc - means disconnect, drop - means drop data.

**Available since:** 5.1.3

elements-number-limit
^^^^^^^^^^^^^^^^^^^^^^^^^^^

**Default value:** ``1000``

**Possible values:** any integer.

**Description:** ``elements-number-limit`` configuration property allows configuring a Denial of Service protection mechanism which limits number of elements sent in stanza. It must be configured on a per ConnectionManager basis:

.. code:: bash

   '<ConnectionManager>' {
       'elements-number-limit' = ###
   }

for example (for ClusterConnectionManager):

.. code:: bash

   'cl-comp' {
       'elements-number-limit' = 100000

**Available since:** 5.2.0

.. _hardenedMode:

hardened-mode
^^^^^^^^^^^^^^^^^^

**Default value:** ``secure``

**Example:** ``'hardened-mode' = secure``

**Possible values:** ``relaxed|secure|strict``

**Description:** Adjusting hardened mode affects handling of security aspects within Tigase. The higher the level the more strict are the rules: \* ``relaxed`` - uses default security capabilities from installed JVM; \* ``secure`` - disables old SSLv2 and SSLv3, disables weak cyphers; \* ``strict`` - in addition to ``secure`` level changes it also disables ``TLSv1`` and ``TLSv1.1`` as well as ciphers that don’t support Forward secrecy.

On older JVM versions it required `UnlimitedJCEPolicyJDK <http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html>`__ installed. It’s not required with OpenJDK8 and newer an OracleJVM 11 and newer.

**Available since:** 5.2.0

max-queue-size
^^^^^^^^^^^^^^^^^^

**Default value:** default queue size is variable depending on RAM size.

**Example:** ``'max-queue-size' = 10000``

**Possible values:** integer number.

**Description:** The ``max-queue-size`` property sets internal queues maximum size to a specified value. By default Tigase sets the queue size depending on the maximum available memory to the Tigase server process. It set’s 1000 for each 100MB memory assigned for JVM. This is enough for most cases. If you have however, an extremely busy service with Pubsub or MUC component generating huge number of packets (presence or messages) this size should be equal or bigger to the maximum expected number of packets generated by the component in a single request. Otherwise Tigase may drop packets that it is unable to process.

**Available since:** 5.1.0

.. _netBuffHighThroughput:

net-buff-high-throughput
^^^^^^^^^^^^^^^^^^^^^^^^^^^

**Default value:** ``64k``

**Example:** ``'net-buff-high-throughput' = '256k'``

**Possible values:** network buffer size as integer.

**Description:** The ``net-buff-high-throughput`` property sets the network buffer for high traffic connections like s2s or connections between cluster nodes. The default is ``64k`` and is optimal for medium traffic websites. If your cluster installation can not cope with traffic between nodes try to increase this number.

**Available since:** 4.3.0

.. _netBuffStandard:

net-buff-standard
^^^^^^^^^^^^^^^^^^^^^^^^^^^

**Default value:** ``2k``

**Example:** ``'net-buff-standard' = '16k'``

**Possible values:** network buffer size as integer.

**Description:** This property sets the network buffer for standard (usually c2s) connections, default value is 2k and is optimal for most installations.

**Available since:** 4.3.0

net-buffer
^^^^^^^^^^^^^^^^^^^^^^^^^^^

**Default value:** ``2k``

**Example:** ``'net-buffer' = 16 * 1024``

**Possible values:** internal network buffer size as integer.

**Description:** Sets default size of a internal network buffer used by ``ConnectionManager`` within the context in which it is set.

**Available since:** 8.0.0

socket-buffer-size
^^^^^^^^^^^^^^^^^^^^^^^^^^^

**Default value:** ``4k`` (for client-to-server connections) and ``64k`` (for server-to-server connections)

**Example:** ``'socket-buffer-size' = 16 * 1024``

**Possible values:** socket network buffer size as integer.

**Description:** Sets default size of a socket network buffer used by ``ConnectionManager`` for each connection within the context in which it is set.

**Available since:** 8.3.0 (previously value of ``net-buffer`` was used)

nonpriority-queue
^^^^^^^^^^^^^^^^^^^^^^^^^^^

**Default value:** ``false``

**Example:** ``'nonpriority-queue' =  true``

**Possible values:** ``true|false``

**Description:** The ``nonpriority`` property can be used to switch to non-priority queues usage in Tigase server (value set to 'true'). Using non-priority queues prevents packets reordering. By default Tigase uses priority queues which means that packets with highest priority may take over packets with lower priority (presence updates) which may result in packets arriving out of order.

This may happen however only for packets of different types. That is, messages may take over presence packets. However, one message never takes over another message for the same user. Therefore, out of order packet delivery is not an issue for the most part.

**Available since:** 5.0.0